"""
难度：简单
从若干副扑克牌中随机抽 5 张牌，判断是不是一个顺子，即这5张牌是不是连续的。2～10为数字本身，A为1，J为11，Q为12，K为13，而大、小王为 0 ，可以看成任意数字。A 不能视为 14。
示例 1:
输入: [1,2,3,4,5]
输出: True
 示例 2:
输入: [0,0,1,2,5]
输出: True
"""

"""
先不考虑牌中有大小王，如果 5 个数是连续的，则这 5 个数中最大值最小值的关系为：最大值 - 最小值 = 4。如果牌中有大小王可以替换这 5 个数中的任意数字，则除大小王之外剩下数的最大值最小值关系为 最大值 - 最小值 <= 4。而且剩余数不能有重复数字。于是可以这样进行判断。

遍历 5 张牌：

如果出现大小王，则跳过。
判断 5 张牌中是否有重复数，如果有则直接返回 False，如果没有则将其加入集合。
计算 5 张牌的最大值，最小值。
最后判断 最大值 - 最小值 <= 4 是否成立。如果成立，返回 True，否则返回 False。"""
from typing import List


class Solution:
    def isStraight(self, nums: List[int]) -> bool:
        max_num, min_num = 0, 14
        repeat = set()
        for num in nums:
            if num == 0:
                continue
            if num in repeat:
                return False
            repeat.add(num)
            max_num = max(max_num,num)
            min_num = min(min_num,num)
        return max_num - min_num <= 4

